package com.cti.ftpservice.vo;

import java.io.File;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;

import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.StringUtils;

/**
 * 文件VO
 * @author 鲁永刚
 *
 */
public class FileVO {
	
	/**
	 * 文件名称
	 */
	private String fileName;
	/**
	 * 文件类型（扩展名）
	 */
	private String fileType;
	/**
	 * 文件内容 二进制格式
	 */
	private DataHandler fileContent;
	
	
	private String fileClientPath;
	
	/**
	 * 文件编码
	 */
	private String encoding;
	
	/**
	 * 上传数据类型
	 * iso_upload2(规范marc数据)
	 * iso_ebook(电子书marc数据)
	 */
	private String dataType;
	
	public FileVO(){
		
	}
	
	public FileVO(File file){
		loadFileInfo(file,true);
	}
	
	public FileVO(File file,Boolean isLoadFileContent){
		loadFileInfo(file,isLoadFileContent);
	}
	
	private void loadFileInfo(File file,Boolean isLoadFileContent){
		String filepath=file.getPath();
		String fileName=FilenameUtils.getName(filepath);
		if(!StringUtils.isBlank(fileName)){
			//String[] fileNameArray=fileName.split("_");
			//this.fileName=fileNameArray[0];
			if(fileName.contains("_"))
			    this.fileName=fileName.substring(0, fileName.lastIndexOf("_"));
			else
				this.fileName=fileName;	
		}
		this.fileClientPath= filepath;
		this.fileType="."+FilenameUtils.getExtension(filepath);
		if(isLoadFileContent)
		  this.fileContent=new DataHandler(new FileDataSource(file));
	}
	
	/**
	 * @return the fileName
	 */
	public String getFileName() {
		return fileName;
	}
	/**
	 * @param fileName the fileName to set
	 */
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
	/**
	 * @return the fileType 加入. 如.zip,.xml等
	 */
	public String getFileType() {
		return fileType;
	}
	/**
	 * @param fileType the fileType to set
	 */
	public void setFileType(String fileType) {
		this.fileType = fileType;
	}
	/**
	 * @return the fileContent
	 */
	public DataHandler getFileContent() {
		return fileContent;
	}
	/**
	 * @param fileContent the fileContent to set
	 */
	public void setFileContent(DataHandler fileContent) {
		this.fileContent = fileContent;
	}
	public String getFileClientPath() {
		return fileClientPath;
	}
	public void setFileClientPath(String fileClientPath) {
		this.fileClientPath = fileClientPath;
	}

	public String getDataType() {
		return dataType;
	}

	public void setDataType(String dataType) {
		this.dataType = dataType;
	}

	public String getEncoding() {
		return encoding;
	}

	public void setEncoding(String encoding) {
		this.encoding = encoding;
	}

}
